/**
 * Copyright (c) Huawei Technologies Co., Ltd. 2021-2021. All rights reserved.
 * <p>
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * <p>
 * http://www.apache.org/licenses/LICENSE-2.0
 * <p>
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.nightonke.boommenusample.slice;

import com.nightonke.boommenu.BoomButtons.BoomButton;
import com.nightonke.boommenu.BoomButtons.HamButton;
import com.nightonke.boommenu.BoomMenuButton;
import com.nightonke.boommenu.OnBoomListenerAdapter;
import com.nightonke.boommenusample.BuilderManager;
import com.nightonke.boommenusample.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.utils.Color;

public class ChangeBoomButtonAbilitySlice extends AbilitySlice {

    private BoomMenuButton bmb;


    /**
     * onStart
     * @param intent
     */
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_change_boom_button);


        bmb = (BoomMenuButton) findComponentById(ResourceTable.Id_bmb);
        assert bmb != null;
        bmb.addBuilder(BuilderManager.getHamButtonBuilder("Change Text", "..."));
        bmb.addBuilder(BuilderManager.getHamButtonBuilder("Change Image", "...")
                .normalImageRes(ResourceTable.Graphic_elephant));
        bmb.addBuilder(BuilderManager.getHamButtonBuilder("Change Color", "...")
                .normalColorRes(ResourceTable.Color_colorPrimary));
        bmb.addBuilder(BuilderManager.getHamButtonBuilder("Change Piece Color", "..."));
        bmb.addBuilder(BuilderManager.getHamButtonBuilder("Change Unable", "...")
                .unableColor(Color.BLUE)
                .unableImageRes(ResourceTable.Graphic_butterfly)
                .unableText("Unable!"));
        bmb.buildButton();
        bmb.setOnBoomListener(new OnBoomListenerAdapter() {
            @Override
            public void onClicked(int index, BoomButton boomButton) {
                super.onClicked(index, boomButton);
                changeBoomButton(index);
            }
        });
    }

    /**
     * change BoomButton
     * @param index
     */
    private void changeBoomButton(int index) {
        // From version 2.0.9, BMB supports a new feature to change contents in boom-button
        // by changing contents in the corresponding builder.
        // Please notice that not every method supports this feature. Only the method whose comment
        // contains the "Synchronicity" tag supports.
        // For more details, check:
        HamButton.Builder builder = (HamButton.Builder) bmb.getBuilder(index);
        if (index == 0) {
            builder.normalText("Changed!");
            builder.highlightedText("Highlighted, changed!");
            builder.subNormalText("Sub-text, changed!");
            builder.normalTextColor(Color.YELLOW);
            builder.highlightedTextColorRes(ResourceTable.Color_colorPrimary);
            builder.subNormalTextColor(Color.BLACK);
        } else if (index == 1) {
            builder.normalImageRes(ResourceTable.Graphic_bat);
            builder.highlightedImageRes(ResourceTable.Graphic_bear);
        } else if (index == 2) {
            builder.normalColorRes(ResourceTable.Color_colorAccent);
        } else if (index == 3) {
            builder.pieceColor(Color.WHITE);
        } else if (index == 4) {
            builder.unable(true);
        }
        bmb.buildButton();
    }

    /**
     * onActive
     */
    @Override
    public void onActive() {
        super.onActive();
    }

    /**
     * onForeground
     * @param intent
     */
    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }
}
